package com.sxpi.utils;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.UUID;

/**
 * @author happy
 * @create 2024-01-04-{TIME}
 */
public class FileUtil {




    public static String upload(String uploadPath, MultipartFile file){
        if (!file.isEmpty()) {
            try {
                // 创建存放文件的文件夹，如果不存在则创建
                Path dir = Paths.get(uploadPath);
                if (!Files.exists(dir)) {
                    Files.createDirectories(dir);
                }

                // 获取上传的文件名
                String filename = file.getOriginalFilename();

                // 设置文件存放的路径
                Path path = dir.resolve(filename);

                // 将文件写入到服务器
                Files.write(path, file.getBytes());
                return "File uploaded successfully!";

            } catch (Exception e) {
                e.printStackTrace();
                return "Upload failed!";
            }
        } else {
            return "Upload failed because the file was empty!";
        }
    }




        /**
         * 上传文件的方法
         *  uploadDir 文件上传路径
         * @param file  上传的文件
         * @return  返回上传后的文件名或失败信息
         */
        public static String uploadFile(MultipartFile file, String uploadDir) {
            // 获取原始文件名
            String originalFilename = file.getOriginalFilename();
            if (originalFilename == null || originalFilename.isEmpty()) {
                return "文件名为空";
            }

            // 提取文件扩展名
            String extension = originalFilename.substring(originalFilename.lastIndexOf("."));

            // 生成新的文件名，防止文件重名
            String objectName = UUID.randomUUID().toString() + extension;

            // 创建目标文件对象
            File destFile = new File(uploadDir + objectName);

            // 确保目标目录存在
            File parentDir = destFile.getParentFile();
            if (!parentDir.exists() && !parentDir.mkdirs()) {
                return "文件上传失败：目标目录无法创建";
            }

            try {
                // 保存文件到本地磁盘
                file.transferTo(destFile);
                return objectName;  // 返回新的文件名
            } catch (IOException e) {
                e.printStackTrace();
                return "文件上传失败: " + e.getMessage();  // 返回上传失败的详细信息
            }
        }

    /**
     *  删除文件方法
     * @param filename
     * @param uploadDir
     * @return
     */
    public String deleteFile(String filename, String uploadDir) {
        // 创建文件对象
        File file = new File(uploadDir + File.separator + filename);

        // 检查文件是否存在
        if (!file.exists()) {
            return "文件不存在";
        }

        // 删除文件
        if (file.delete()) {
            return "文件删除成功";
        } else {
            return "文件删除失败";
        }
    }



}



